/*
 * @Description: 
 * @Author: Aroma
 * @Date: 2024-09-03 17:44:26
 * @LastEditors: Aroma
 * @LastEditTime: 2024-09-03 18:43:21
 * @别瞎看: 你个无脑牛马
 */
import java.util.Scanner;

public class Test3_DayOfYear {
    public static void main(String[] args) {
        //获取键盘输入
        Scanner scanner = new Scanner(System.in);
        //提示用户输入年份
        System.out.print("请输入年份: ");
        int year = scanner.nextInt();
        //提示用户输入月份
        System.out.print("请输入月份 (1-12): ");
        int month = scanner.nextInt();
        //提示用户输入日期
        System.out.print("请输入日期 (1-31): ");
        int day = scanner.nextInt();

        // 调用函数计算并输出结果
        int dayOfYear = getDayOfYear(year, month, day);
        System.out.println(year + "年" + month + "月" + day + "日是这一年的第" + dayOfYear + "天");

        scanner.close();
    }


    // 判断是否是闰年
    private static boolean isLeapYear(int year) {
        return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
    }
    
    // 根据年份、月份和日期计算这是该年的第几天
    private static int getDayOfYear(int year, int month, int day) {
        // 每个月的天数，注意2月暂时按非闰年处理
        int[] daysOfMonth = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
        // 如果是闰年，2月改为29天
        if (isLeapYear(year)) {
            daysOfMonth[2] = 29;
        }

        // 累加前几个月的天数
        int dayOfYear = 0;
        for (int i = 1; i < month; i++) {
            dayOfYear += daysOfMonth[i];
        }

        // 加上当前月的天数
        dayOfYear += day;

        return dayOfYear;
    }
}